package org.example.captcha.controller;

import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpSession;
import java.util.Date;

@RestController
@RequestMapping("/admin")
public class KaptchaController {
    // session里的验证码 的key
    private static final String   ADMIN_KAPTCHA_SESSION_KEY = "ADMIN_KAPTCHA_SESSION_KEY";
    // 验证码创建时间 的key
    private static final String ADMIN_KAPTCHA_SESSION_DATE =  "ADMIN_KAPTCHA_SESSION_DATE";
   // 验证码的 最大存在时间 , 以毫秒为单位 :60秒
    private static final  long TIME_OUT = 10 * 1000 ;
    @RequestMapping("/check")
    public boolean check(String inputCaptcha , HttpSession session){
        // 1. 判断输入的验证码是否为空
        if(!StringUtils.hasLength(inputCaptcha)){
            return false ;
        }
        // 2. 获取生成的验证码, 验证码存在session里,
        // 通过key获取 顺便把验证码生成时间也获取
        String captcha = (String) session.getAttribute(ADMIN_KAPTCHA_SESSION_KEY);
        Date captchaDate = (Date) session.getAttribute(ADMIN_KAPTCHA_SESSION_DATE);

        // 3. 判断验证码和输入的验证码是否一致, 不限制大小写
        // 同时 判断时间 有没有 超过一分钟, 超时了验证码就过期了
        if(captcha.equalsIgnoreCase(inputCaptcha)){
            if((captchaDate != null) && ((System.currentTimeMillis() - captchaDate.getTime()) < TIME_OUT)){
                return true ;
            }
        }
        return false ;
    }

}

